package com.demo.java.OD501_550.OD516;

import java.util.Scanner;

/**
 * @author bug菌
 * @Source 公众号：猿圈奇妙屋
 * @des： 【最优芯片资源占用(C卷-100分)】问题
 * @url： https://blog.csdn.net/weixin_43970743/article/details/146482280
 */
public class OdMain {
    public static void main(String[] args) {
        // 处理输入
        Scanner in = new Scanner(System.in);
        int M = in.nextInt();  // 总容量
        int N = in.nextInt();  // 芯片数量
        String user_input = in.next();  // 用户输入的资源配置

        // 表示各个芯片的剩余总容量
        double[] used = new double[N];
        // 初始化每个芯片的容量
        for (int i = 0; i < N; i++) {
            used[i] = M * 1.25;  // 每个芯片初始容量为 M * 1.25
        }

        // 按照用户配置分配每一个容量
        for (int i = 0; i < user_input.length(); i++) {
            double capacity = 0.0;
            // 判断资源类型
            if (user_input.charAt(i) == 'A') {
                capacity = 1.25;  // A 对应 1.25G
            } else if (user_input.charAt(i) == 'B') {
                capacity = 2.5;   // B 对应 2.5G
            } else {
                capacity = 10.0;  // C 对应 10G
            }

            // 从第一块芯片开始分配
            for (int j = 0; j < N; j++) {
                if (used[j] >= capacity) {  // 如果芯片剩余容量足够
                    used[j] -= capacity;  // 分配资源
                    break;
                }
            }
        }

        // 输出每个芯片的剩余容量状态
        for (int j = 0; j < N; j++) {
            String output_str = "";

            // 每块芯片的剩余容量以1.25G为单位，输出占用的状态
            for (int k = 0; k < M - used[j] / 1.25; k++) {
                output_str += '1';  // 表示占用
            }
            // 输出剩余容量
            for (int i = 0; i < used[j] / 1.25; i++) {
                output_str += "0";  // 表示剩余
            }
            System.out.println(output_str);  // 输出结果
        }
    }
}